Skip to content

feat(react-headless-components-preview): add Combobox component and stories#36114

Merged
dmytrokirpa merged 8 commits into
masterfrom
feat/headless-combobox-stories
May 16, 2026
Merged

feat(react-headless-components-preview): add Combobox component and stories#36114
dmytrokirpa merged 8 commits into
masterfrom
feat/headless-combobox-stories

Conversation

@dmytrokirpa
Copy link
Copy Markdown
Contributor

@dmytrokirpa dmytrokirpa commented May 7, 2026

Summary

  • Adds the headless Combobox component, its stories, and Cypress/test coverage to @fluentui/react-headless-components-preview.
  • Wires up a ./combobox subpath export and registers the package in the bundle-size fixture.
  • Shares Listbox, Option, and OptionGroup with the headless Dropdown by re-exporting from ../Dropdown/....

Note: This PR is stacked on top of #36101 (headless Dropdown). Merge that one first; the diff here will collapse to Combobox-only changes once the base is merged.

@dmytrokirpa dmytrokirpa requested a review from a team as a code owner May 7, 2026 09:22
@dmytrokirpa dmytrokirpa self-assigned this May 7, 2026
@dmytrokirpa dmytrokirpa marked this pull request as draft May 7, 2026 09:25
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 7, 2026

Pull request demo site: URL

@dmytrokirpa dmytrokirpa force-pushed the feat/headless-dropdown-stories branch from edf6790 to 1dab2d3 Compare May 7, 2026 09:35
@dmytrokirpa dmytrokirpa force-pushed the feat/headless-combobox-stories branch from 4547588 to 2e230cf Compare May 7, 2026 10:20
@dmytrokirpa dmytrokirpa marked this pull request as ready for review May 12, 2026 11:24
@dmytrokirpa dmytrokirpa requested review from Copilot May 12, 2026 13:17
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new headless Combobox surface to @fluentui/react-headless-components-preview, including Storybook stories, unit tests, Cypress coverage, and a new ./combobox subpath export. It also reuses the headless Dropdown’s Listbox/Option/OptionGroup implementations via re-exports to keep behavior consistent across headless selection components.

Changes:

  • Added headless Combobox implementation (state, render, context values) plus Jest + Cypress tests.
  • Added Storybook stories and styling for common scenarios (default, controlled, freeform, grouped, multiselect, disabled, controlled open).
  • Wired ./combobox export + API report, and registered Combobox in the bundle-size fixture.

Reviewed changes

Copilot reviewed 24 out of 24 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
packages/react-components/react-headless-components-preview/stories/src/Dropdown/DropdownBestPractices.md Adds placeholder Best Practices doc for Dropdown stories/docs.
packages/react-components/react-headless-components-preview/stories/src/Combobox/index.stories.tsx Registers Combobox Storybook entry and story exports.
packages/react-components/react-headless-components-preview/stories/src/Combobox/ComboboxMultiselect.stories.tsx Adds multiselect Combobox story.
packages/react-components/react-headless-components-preview/stories/src/Combobox/ComboboxGrouped.stories.tsx Adds grouped options Combobox story.
packages/react-components/react-headless-components-preview/stories/src/Combobox/ComboboxFreeform.stories.tsx Adds freeform input Combobox story.
packages/react-components/react-headless-components-preview/stories/src/Combobox/ComboboxDisabled.stories.tsx Adds disabled Combobox story.
packages/react-components/react-headless-components-preview/stories/src/Combobox/ComboboxDescription.md Adds component-level Storybook description text.
packages/react-components/react-headless-components-preview/stories/src/Combobox/ComboboxDefault.stories.tsx Adds default Combobox story with clear + expand icons.
packages/react-components/react-headless-components-preview/stories/src/Combobox/ComboboxControllingOpenAndClose.stories.tsx Adds controlled open/close story for Combobox.
packages/react-components/react-headless-components-preview/stories/src/Combobox/ComboboxControlled.stories.tsx Adds fully controlled selection/value story.
packages/react-components/react-headless-components-preview/stories/src/Combobox/combobox.module.css Adds story styling for the headless Combobox examples.
packages/react-components/react-headless-components-preview/library/src/components/Combobox/useComboboxContextValues.ts Adapts useComboboxContextValues from @fluentui/react-combobox for headless state typing.
packages/react-components/react-headless-components-preview/library/src/components/Combobox/useCombobox.ts Implements headless Combobox state using shared popup/listbox plumbing.
packages/react-components/react-headless-components-preview/library/src/components/Combobox/renderCombobox.tsx Adds default renderer for headless Combobox + providers.
packages/react-components/react-headless-components-preview/library/src/components/Combobox/index.ts Exposes Combobox API and re-exports Dropdown Listbox/Option/OptionGroup.
packages/react-components/react-headless-components-preview/library/src/components/Combobox/Combobox.types.ts Defines headless Combobox public types and data attributes.
packages/react-components/react-headless-components-preview/library/src/components/Combobox/Combobox.tsx Adds headless Combobox component entrypoint.
packages/react-components/react-headless-components-preview/library/src/components/Combobox/Combobox.test.tsx Adds Jest conformance + basic behavior assertions.
packages/react-components/react-headless-components-preview/library/src/components/Combobox/Combobox.cy.tsx Adds Cypress coverage for key interactions and variants.
packages/react-components/react-headless-components-preview/library/src/combobox.ts Adds ./combobox subpath entry re-exporting the Combobox surface.
packages/react-components/react-headless-components-preview/library/package.json Adds exports["./combobox"] mapping.
packages/react-components/react-headless-components-preview/library/etc/combobox.api.md Adds API Extractor report for ./combobox.
packages/react-components/react-headless-components-preview/library/bundle-size/AllComponents.fixture.js Registers combobox export in bundle-size fixture.
change/@fluentui-react-headless-components-preview-0ee0a685-d92f-4953-a5bd-8813ad8abc16.json Adds Beachball change entry for the new Combobox export.

Base automatically changed from feat/headless-dropdown-stories to master May 14, 2026 16:17
dmytrokirpa and others added 3 commits May 14, 2026 18:20
…tories

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…tories

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@dmytrokirpa dmytrokirpa force-pushed the feat/headless-combobox-stories branch from 2e230cf to 71e8e13 Compare May 14, 2026 16:20
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 14, 2026

📊 Bundle size report

Package & Exports Baseline (minified/GZIP) PR Change
react-headless-components-preview
react-headless-components-preview: entire library
128.051 kB
37.557 kB
131.277 kB
38.421 kB
3.226 kB
864 B

🤖 This report was generated against f00a0e6e39771477e8c8b74480c3fc78873d6f8d

Copy link
Copy Markdown
Contributor

@Hotell Hotell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

left some comments/follow-ups ty

@dmytrokirpa dmytrokirpa merged commit 33ba2d2 into master May 16, 2026
15 checks passed
@dmytrokirpa dmytrokirpa deleted the feat/headless-combobox-stories branch May 16, 2026 08:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants